#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
最终验证脚本 - 验证项目重组后的功能
"""

import os
import pandas as pd

def final_verification():
    """最终验证"""
    
    print("=== 项目重组后最终验证 ===\n")
    
    # 1. 检查目录结构
    print("📁 目录结构检查:")
    
    expected_structure = {
        '主目录文件': [
            'extract_industry_data.py',
            'extract_simple.py', 
            'README.md',
            'process_excel_v2.py',
            'create_indicator_classification.py'
        ],
        '行业均值目录': [
            '行业均值/整理后的行业指标数据.xlsx',
            '行业均值/行业指标字典表.xlsx',
            '行业均值/验证报告.txt',
            '行业均值/示例输出_酒类行业2023.json'
        ],
        'test目录': [
            'test/verify_tool.py',
            'test/verify_new_format.py',
            'test/run_example.py',
            'test/demo_usage.py'
        ]
    }
    
    all_good = True
    for category, files in expected_structure.items():
        print(f"\n  {category}:")
        for file in files:
            if os.path.exists(file):
                print(f"    ✅ {file}")
            else:
                print(f"    ❌ {file} (缺失)")
                all_good = False
    
    # 2. 验证数据文件
    print(f"\n📊 数据文件验证:")
    data_file = '行业均值/整理后的行业指标数据.xlsx'
    if os.path.exists(data_file):
        try:
            df = pd.read_excel(data_file, sheet_name='整理后数据')
            print(f"  ✅ 主数据文件读取成功")
            print(f"    • 记录数: {len(df):,}")
            print(f"    • 行业数: {df['行业名称'].nunique()}")
            print(f"    • 指标数: {df['指标名称'].nunique()}")
            print(f"    • 年份范围: {df['年份'].min()}-{df['年份'].max()}")
        except Exception as e:
            print(f"  ❌ 主数据文件读取失败: {e}")
            all_good = False
    else:
        print(f"  ❌ 主数据文件不存在")
        all_good = False
    
    dict_file = '行业均值/行业指标字典表.xlsx'
    if os.path.exists(dict_file):
        try:
            df_dict = pd.read_excel(dict_file)
            print(f"  ✅ 字典文件读取成功")
            print(f"    • 指标数: {len(df_dict)}")
            print(f"    • 分类数: {df_dict['指标大类'].nunique()}")
        except Exception as e:
            print(f"  ❌ 字典文件读取失败: {e}")
            all_good = False
    else:
        print(f"  ❌ 字典文件不存在")
        all_good = False
    
    # 3. 功能测试
    print(f"\n🔧 工具功能测试:")
    
    # 测试主工具的语法
    try:
        with open('extract_industry_data.py', 'r', encoding='utf-8') as f:
            content = f.read()
            # 简单的语法检查
            compile(content, 'extract_industry_data.py', 'exec')
        print(f"  ✅ 主工具语法检查通过")
    except Exception as e:
        print(f"  ❌ 主工具语法错误: {e}")
        all_good = False
    
    # 测试简化工具的语法
    try:
        with open('extract_simple.py', 'r', encoding='utf-8') as f:
            content = f.read()
            # 简单的语法检查
            compile(content, 'extract_simple.py', 'exec')
        print(f"  ✅ 简化工具语法检查通过")
    except Exception as e:
        print(f"  ❌ 简化工具语法错误: {e}")
        all_good = False
    
    # 4. 路径验证
    print(f"\n🔗 路径配置验证:")
    
    # 检查工具中的默认路径是否正确
    with open('extract_industry_data.py', 'r', encoding='utf-8') as f:
        content = f.read()
        if '行业均值/整理后的行业指标数据.xlsx' in content:
            print(f"  ✅ 主工具路径配置正确")
        else:
            print(f"  ❌ 主工具路径配置错误")
            all_good = False
    
    with open('extract_simple.py', 'r', encoding='utf-8') as f:
        content = f.read()
        if '行业均值/整理后的行业指标数据.xlsx' in content:
            print(f"  ✅ 简化工具路径配置正确")
        else:
            print(f"  ❌ 简化工具路径配置错误")
            all_good = False
    
    # 5. 文档检查
    print(f"\n📖 文档检查:")
    
    readme_exists = os.path.exists('README.md')
    structure_doc_exists = os.path.exists('项目结构说明.md')
    summary_exists = os.path.exists('项目完成总结.md')
    
    print(f"  {'✅' if readme_exists else '❌'} README.md")
    print(f"  {'✅' if structure_doc_exists else '❌'} 项目结构说明.md") 
    print(f"  {'✅' if summary_exists else '❌'} 项目完成总结.md")
    
    if not all([readme_exists, structure_doc_exists, summary_exists]):
        all_good = False
    
    # 6. 最终结果
    print(f"\n{'='*50}")
    if all_good:
        print(f"🎉 项目重组验证通过！")
        print(f"✅ 所有文件已正确组织")
        print(f"✅ 工具配置正确")
        print(f"✅ 数据文件完整")
        print(f"✅ 文档齐全")
        print(f"\n🚀 项目已准备就绪，可以正常使用！")
        
        print(f"\n💻 快速开始:")
        print(f"  python extract_industry_data.py --help")
        print(f"  python extract_industry_data.py --list-industries")
        print(f"  python extract_industry_data.py --industry 酒 --year 2023")
    else:
        print(f"❌ 项目重组验证失败！")
        print(f"请检查上述错误并修复后重新验证。")
    
    print(f"{'='*50}")

if __name__ == "__main__":
    final_verification()
